﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using WaterBill.BUS;
using WaterBill.DTO;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Grid;

namespace WaterBill.GUI
{
    public partial class frmHamlet : DevExpress.XtraEditors.XtraForm
    {
        public frmHamlet()
        {
            InitializeComponent();
        }
        BUS_Hamlets bushamlet = new BUS_Hamlets();
        private void frmHamlet_Load(object sender, EventArgs e)
        {
            load_form();
        }

        private void load_form()
        {
            try
            {
                gcHamlet.DataSource = bushamlet.BUS_Hamlets_GetAll();

                DataTable dtStatus = new DataTable();
                dtStatus.Columns.Add("Value", typeof(int));
                dtStatus.Columns.Add("Text");
                DataRow drStatus;
                drStatus = dtStatus.NewRow();
                drStatus["Value"] = 1;
                drStatus["Text"] = "Hoạt động";
                dtStatus.Rows.Add(drStatus);
                drStatus = dtStatus.NewRow();
                drStatus["Value"] = 2;
                drStatus["Text"] = "Không hoạt động";
                dtStatus.Rows.Add(drStatus);
                cbbHamletStatus.DataSource = dtStatus;
                cbbHamletStatus.DisplayMember = "Text";
                cbbHamletStatus.ValueMember = "Value";
                cbbHamletStatus.SelectedIndex = 0;

                EmptyField();
                btnDelete.Enabled = false;
                btnEdit.Enabled = false;
            }
            catch
            {
            }
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {
            gcHamlet.ShowPrintPreview();
        }

        private void gvHamlet_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            btnAdd.Enabled = true;
            btnEdit.Enabled = true;
            btnSave.Enabled = false;
            btnCancel.Enabled = false;
            btnDelete.Enabled = true;
            EnableFalseField();
            try
            {
                //Convert.ToString(((GridView)sender).GetRowCellValue(e.FocusedRowHandle, "CustomerId"));
                txtHamletid.Text = Convert.ToString(gvHamlet.GetRowCellValue(e.FocusedRowHandle, "HamletId"));
                txtHamletName.Text = Convert.ToString(gvHamlet.GetRowCellValue(e.FocusedRowHandle, "Name"));
                cbbHamletStatus.SelectedValue = Convert.ToString(gvHamlet.GetRowCellValue(e.FocusedRowHandle, "Status"));
            }
            catch
            {

                btnEdit.Enabled = false;
            }
        }


        public void EnableTrueField()
        {
            txtHamletName.Enabled = true;
            cbbHamletStatus.Enabled = true;
        }

        public void EnableButton()
        {
            btnAdd.Enabled = true;
            btnEdit.Enabled = true;
            btnCancel.Enabled = true;
            btnSave.Enabled = true;
        }
        public void DisableButton()
        {
            btnAdd.Enabled = false;
            btnEdit.Enabled = false;
            btnCancel.Enabled = false;
            btnSave.Enabled = false;
        }

        public void EnableFalseField()
        {
            txtHamletName.Enabled = false;
            cbbHamletStatus.Enabled = false;
        }

        public void EmptyField()
        {
            txtHamletid.Text = "";
            txtHamletName.Text = "";
            cbbHamletStatus.SelectedIndex = 0;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            EnableButton();
            EnableTrueField();
            EmptyField();
            btnAdd.Enabled = false;
            btnEdit.Enabled = false;
            btnDelete.Enabled = false;
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            EnableButton();
            EnableTrueField();
            btnAdd.Enabled = false;
            btnEdit.Enabled = false;
            btnDelete.Enabled = true;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            btnAdd.Enabled = true;
            btnSave.Enabled = false;
            btnCancel.Enabled = false;
            btnEdit.Enabled = true;
            EnableFalseField();
            if (txtHamletid.Text == "")
            {
                EmptyField();
                btnEdit.Enabled = false;
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (txtHamletName.Text != "")
            {
                DTO_Hamlets obj = new DTO_Hamlets();
                obj.Name = txtHamletName.Text;
                obj.Status = Convert.ToInt32(cbbHamletStatus.SelectedValue);
                if (txtHamletid.Text == "")
                {
                    //Thực hiện thêm mới
                    if (bushamlet.BUS_Hamlets_Insert(obj))
                    {
                        XtraMessageBox.Show("Thêm thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        btnEdit.Enabled = false;
                        EmptyField();
                    }
                    else
                    {
                       XtraMessageBox.Show("Không thể thêm được.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else { 
                    //Thực hiện sửa
                    obj.HamletId = Convert.ToInt32(txtHamletid.Text);
                    if (bushamlet.BUS_Hamlets_Update(obj))
                    {
                        XtraMessageBox.Show("Sửa thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        btnEdit.Enabled = true;
                    }
                    else {
                        XtraMessageBox.Show("Không thể sửa được.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                EnableFalseField();
                DisableButton();
                btnAdd.Enabled = true;
                btnDelete.Enabled = false;
                gcHamlet.DataSource = bushamlet.BUS_Hamlets_GetAll();
            }
            else {
                XtraMessageBox.Show("Tên ấp không được bỏ trống", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtHamletName.Focus();
                txtHamletName.BackColor = Color.Cyan;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (txtHamletid.Text != "")
            {
                int Hamletid = Convert.ToInt32(txtHamletid.Text);
                if (XtraMessageBox.Show("Bạn có chắc là muốn xóa ấp có mã ấp #" + Hamletid + "?", "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    if (bushamlet.BUS_Hamlets_Delete(Hamletid))
                    {
                        XtraMessageBox.Show("Xóa thành công ấp có mã ấp #" + Hamletid + " ^.^...!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        gcHamlet.DataSource = bushamlet.BUS_Hamlets_GetAll();
                    }
                    else
                    {
                        XtraMessageBox.Show("Lỗi, không thể xóa ấp có mã #" + Hamletid + ", vui lòng thử lại.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else XtraMessageBox.Show("Cảnh báo, chưa có ấp nào được chọn.", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnPrev_Click(object sender, EventArgs e)
        {
            gvHamlet.MovePrev();
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            gvHamlet.MoveNext();
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            splashScreenManager1.ShowWaitForm();
            load_form();
            splashScreenManager1.CloseWaitForm();
        }

        
    }
}